package com.weixiao.config;

import com.weixiao.domain.Goods;
import com.weixiao.service.GoodsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.List;

@Component
public class DataSync {
    @Autowired
    private GoodsService goodsService;

    @Autowired
    private StringRedisTemplate redisTemplate;
    /**
     * 这个方法用来将数据库中的每件商品总库存同步到redis中
     *
     * 真实业务使用定时器处理（如下）
     * @Scheduled(cron="0 0 10 * * ? *")
     * public void initData(){
     *
     * }
     */

    // 我们测试直接在每次启动项目前同步即可，加上此注解，项目启动就会执行此方法，将数据库中数据同步到redis
    @PostConstruct
    public void initData(){
        //查询参与秒杀商品
        List<Goods> goodsList=goodsService.selectSeckillGoods();
        if (CollectionUtils.isEmpty(goodsList)) {
            //为空则直接返回
            return;
        }
        //不为空就往redis里面同步,遍历将每个商品的库存分别存入到redis
        goodsList.forEach(goods -> {
            redisTemplate.opsForValue().set("seckill_goodsId:" + goods.getGoodsId(), goods.getTotalStocks().toString());
        });
      }
}
